Skip to content

feat(blog): Engineering·Life IA와 홈 탐색 UX 개편 - #80

Merged
dev-wooyeon merged 6 commits into
masterfrom
codex/ui-renewal-pr
Mar 5, 2026
Merged

feat(blog): Engineering·Life IA와 홈 탐색 UX 개편#80
dev-wooyeon merged 6 commits into
masterfrom
codex/ui-renewal-pr

Conversation

@dev-wooyeon

@dev-wooyeon dev-wooyeon commented Mar 5, 2026

Copy link
Copy Markdown
Owner

변경 요약

  • 정보 구조를 Engineering | Life | Resume 중심으로 재구성했어요.
  • 목록 진입점을 /engineering, /life로 분리하고 /blog, /series는 새 구조로 리다이렉트했어요.
  • 상세 퍼머링크 /blog/[slug]는 그대로 유지해서 기존 외부 링크를 안전하게 보존했어요.
  • 홈 화면을 Hero + 아티클 중심 탐색 구조로 개편하고, 인기 글/시리즈 패널을 함께 노출했어요.
  • 시리즈 메타 카테고리를 Tech로 정규화하고 스키마 계약을 강화했어요.
  • Agentation 개발 워크플로를 추가해서 코멘트 기반 반복 수정 흐름을 안정화했어요.

커밋 구성

  1. feat(blog): Engineering·Life IA 라우팅 재구성
  • 라우팅/네비게이션/모바일 탭 구조를 재정렬했어요.
  • /engineering, /life 엔트리를 추가했어요.
  • /blog, /series 리다이렉트를 적용했어요.
  1. refactor(post): 시리즈 카테고리 Tech 정규화
  • 시리즈 글 categoryTech로 통일했어요.
  • frontmatter/post 타입 계약을 enum 중심으로 맞췄어요.
  1. feat(home): 홈 아티클 중심 탐색 패널 개편
  • Hero 이후 탐색 레이아웃을 아티클 중심으로 개편했어요.
  • 아티클 페이지네이션, 인기 글, 시리즈 상세 진입을 연결했어요.
  1. chore(devtools): Agentation 자동 피드백 워크플로 도입
  • 개발 환경 오버레이와 webhook 기반 처리 루프를 추가했어요.
  1. test(e2e): 스모크 시나리오 프로젝트별 안정화
  • 모바일 전용 시나리오의 프로젝트 가드를 정리했어요.
  • 스모크 시나리오를 안정적으로 재현할 수 있게 보강했어요.

검증 결과

  • npm run test:smoke
  • 결과: Vitest 15 passed, Playwright smoke 19 passed, 2 skipped

라우트 계약

  • NEW /engineering
  • NEW /life
  • NEW /engineering/series/[seriesId]
  • 301 /blog -> /engineering
  • 301 /series -> /engineering?type=series
  • KEEP /blog/[slug]

검토 포인트

  • IA/라우팅/홈 탐색이 함께 바뀌는 변경이라서 커밋 단위로 순서대로 보면 영향 범위를 빠르게 확인할 수 있어요.

네비게이션을 Engineering·Life·Resume 중심으로 정리했어요.
모바일 하단 네비 탭 구조와 터치 영역을 조정해서 탐색 안정성을 높였어요.

/engineering, /life 목록 진입점을 추가하고 /blog, /series 리다이렉트를 붙였어요.
Engineering 전용 목록 페이지와 타입 필터, 페이지네이션 동기화를 도입했어요.
시리즈 글 메타 카테고리를 Tech로 통일했어요.
프론트매터 스키마와 Post 타입 계약을 category enum 중심으로 맞췄어요.

저장소 레이어에서 정규화 가정이 유지되는지 테스트를 보강했어요.
홈을 Hero 이후 2컬럼 탐색 구조로 바꾸고 아티클 5개 페이징을 붙였어요.
인기 글 Top5 집계와 시리즈 상세 라우트를 추가해서 홈에서 바로 탐색이 이어지게 했어요.

스크롤 연동 soft reveal 인터랙션과 관련 테스트·스모크 시나리오를 함께 보강했어요.
개발 환경에서 오버레이 기반 코멘트 수집 흐름을 추가했어요.
Webhook autorun 경로와 가이드를 넣어서 annotation 등록 후 처리 루프를 자동화했어요.

로컬 설정 변수와 관련 의존성을 함께 정리했어요.
모바일 전용 시나리오는 desktop 프로젝트에서 건너뛰도록 가드를 추가했어요.
홈 시리즈 카드 이동 테스트는 click 플로우를 안정화해서 간헐 실패를 줄였어요.

로컬 smoke 실행에서 19 passed, 2 skipped 기준으로 재검증했어요.
@vercel

vercel Bot commented Mar 5, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
eunu-log Ready Ready Preview, Comment Mar 5, 2026 7:58am

@dev-wooyeon dev-wooyeon self-assigned this Mar 5, 2026
@dev-wooyeon dev-wooyeon added the enhancement New feature or request label Mar 5, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2553ed3d7f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/app/actions/view.ts
Comment on lines +147 to +148
.order('count', { ascending: false })
.limit(normalizedLimit);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Apply deterministic tie-break before limiting views

getPopularViewsInRecentDays limits rows immediately after ordering only by count, then tries to break ties by updated_at in memory; if more than limit posts share the same count, Supabase can return any subset of tied rows, so newer posts can be dropped and the final ranking becomes non-deterministic for the "recent popular" panel. Add a secondary DB sort on updated_at before .limit(...) so the cutoff is stable.

Useful? React with 👍 / 👎.

});
}

const child = runAutorunCommand(payload.annotation?.id);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make webhook autorun lock acquisition atomic

The webhook checks for an active lock and then spawns the autorun process before writing a new lock file, so two webhook requests arriving close together can both pass the check and start separate autorun processes. This breaks the single-run guarantee (reason: 'autorun already running') and can trigger overlapping automated edits/tests; acquire the lock atomically before spawning.

Useful? React with 👍 / 👎.

useReducedMotion 반환값이 boolean | null이라서
Vercel 타입 검사에서 useSoftRevealMotion 호출이 실패했어요.

null 병합으로 boolean 타입을 고정해서
preview 빌드가 안정적으로 통과하게 했어요.
@dev-wooyeon
dev-wooyeon merged commit 3be7ee2 into master Mar 5, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant